package com.inesv.api.interfaces;

import java.math.BigDecimal;

/**
 *  create by liukeling
 *  Interface Name EthMethodDefine
 *  Ethapi方法的提取
 */
public interface EthMethodDefine {
    /**
     * 获取节点最新高度
     * @return  返回最新高度
     */
    String getHeight();

    /**
     * 转账方法
     * @param from   转出账号或地址
     * @param to     转入地址
     * @param value  金额
     * @Param password 转出地址或账号的密码
     * @return  交易的hash值
     */
    String sendTransaction(String from,String to,String value,String password);

    /**
     * 根据区块高度获取该高度的流水集合
     * @param height  区块高度 16进制
     * @return  返回流水集合
     */
    String getTransactionList(String height);

    /**
     * 获取地址或者账号的余额
     * @param address  地址或账号
     * @return  金额
     */
    String getBalance(String address);

    /**
     * 创建钱包地址
     * @param flag  创建钱包地址所需要的参数
     * @return  钱包地址
     */
    String newAddress(String flag);

    /**
     * 根据hash获取流水记录
     * @param hash  流水hash
     * @return  流水信息
     */
    String getTransactionByHash(String hash);

    /**
     * 预估矿工费
     * @param outAddress  转出账号
     * @param inAddress   转入账号
     * @param value        金额
     * @return             预估矿工费
     */
    String getGasAndGasPrice(String outAddress,String inAddress,String value);

    BigDecimal getGas();

    BigDecimal getGasPrice();

    BigDecimal getWEI();
}
